//
//  CLSortArrayCombine.m
//  Charles
//
//  Created by Charles on 2020/3/16.
//  Copyright © 2020 charles. All rights reserved.
//

#import "CLSortArrayMerge.h"
/*
 从头开始遍历两个数组以两个数组的长度作为边界，遍历两个数组，判断同一次循环两个数组值得大小，并且移动相应的指针。最后如果有剩余元素则依次加入到合并后的数组中。
 */
@implementation CLSortArrayMerge
// 将有序数组a 和 b 的值合并到一个数组result中，且仍然保持有序。
void  mergetList(int a[],int aLen,int b[], int bLen, int result[]){
    // 遍历a数组的指针
    int p = 0;
    // 遍历b数组的指针
    int q = 0;
    // 记录当前存储位置
    int i = 0;
    // 任一数组没有达到边界则进行遍历
    while (p < aLen && q < bLen) {
        if (a[p] < b[q]) {
            result[i] = a[p];
            // 移动a数组指针
            p++;
        }else {
            result[i] = b[q];
            // 移动b数组指针
            q++;
        }
        i++;
    }
    
    // 如果a数组有剩余
    while (p < aLen) {
        // 把a数组剩余的元素拼接到合并结果数组的后面
        result[i]= a[p++];
        i++;
    }
    
    // 如果b数组有剩余
    while (q < bLen) {
        // 把b数组剩余的元素拼接到合并结果数组的后面
        result[i] = b[q++];
        i++;
    }
}

@end
